package lin

type Epui表格列 struct {
	表格列配置  L列表
}

//列表里应该改列名同时是数据来源 就是 prop  但是同时会添加 label 会清空原始数据 并重新创建
func (类 *Epui表格列) C创建表格列(数据字段名列 L列表) {
	类.表格列配置.Q清空()
	for i := 0; i < 数据字段名列.QS取数量(); i++ {
		表 := J键值表{}
		表.ZW置文本(数据字段名列.QW取文本(i), "prop")
		表.ZW置文本(数据字段名列.QW取文本(i), "label")
		类.表格列配置.T添加值(表)
	}
}

//键置表 {数据字段名:标题名}
func (类 *Epui表格列) ZB置标题(数据标题表 J键值表) {
	数据字段组 := 数据标题表.QJ取键组()

	for _, 字段 := range 数据字段组 {
		标题 := 数据标题表.QW取文本(字段)
		位置 := 类.表格列配置.C查找("prop", 字段)
		if 位置 >= 0 {
			类.表格列配置.ZW置文本(标题, 位置, "label")
		}
	}
}

func (类 *Epui表格列) ZK置宽度(宽度 int, 数据字段组 ...string) {
	for _, 字段 := range 数据字段组 {
		位置 := 类.表格列配置.C查找("prop", 字段)
		if 位置 >= 0 {
			类.表格列配置.ZZ置整数(宽度, 位置, "width")
		}
	}
}

func (类 *Epui表格列) ZX置显示溢出提示(数据字段组 ...string) {
	for _, 字段 := range 数据字段组 {
		位置 := 类.表格列配置.C查找("prop", 字段)
		if 位置 >= 0 {
			类.表格列配置.ZL置逻辑(true, 位置, "showOverflowTooltip")
		}
	}
}

func (类 *Epui表格列) ZP置排序(数据字段组 ...string) {
	for _, 字段 := range 数据字段组 {
		位置 := 类.表格列配置.C查找("prop", 字段)
		if 位置 >= 0 {
			类.表格列配置.ZL置逻辑(true, 位置, "sortable")
		}
	}
}

//0 居中 1 居左 2 居右边  默认1     left / center / right
func (类 *Epui表格列) ZD置对齐方式(对齐方式 int, 数据字段组 ...string) {
	方式 := "left"
	if 对齐方式 == 0 {
		方式 = "center"
	} else if 对齐方式 == 2 {
		方式 = "right"
	}
	for _, 字段 := range 数据字段组 {
		位置 := 类.表格列配置.C查找("prop", 字段)
		if 位置 >= 0 {
			类.表格列配置.ZW置文本(方式, 位置, "align")
		}
	}
}

// 设置最小宽度
func (类 *Epui表格列) ZM置最小宽度(最小宽度 int, 数据字段组 ...string) {
	for _, 字段 := range 数据字段组 {
		位置 := 类.表格列配置.C查找("prop", 字段)
		if 位置 >= 0 {
			类.表格列配置.ZZ置整数(最小宽度, 位置, "minWidth")
		}
	}
}

func (类 *Epui表格列) Q取表格配置列() L列表 {
	return 类.表格列配置
}
func (类 *Epui表格列) B表格配置列数据筛选(数据列表 L列表, 附加数据列 ...string) (筛选后列表 L列表) {
	筛选后列表.Q清空()
	for i := 0; i < 类.表格列配置.QS取数量(); i++ {
		数据字段 := 类.表格列配置.QW取文本(i, "prop")
		附加数据列 = append(附加数据列, 数据字段)
	}
	for i := 0; i < 数据列表.QS取数量(); i++ {
		表 := 数据列表.QJ取键值表(i)
		表组 := 表.QJ取键组()
		for _, 数据字段 := range 表组 {
			保留 := false
			for _, 显示字段 := range 附加数据列 {
				if 显示字段 == 数据字段 {
					保留 = true
					break
				}
			}
			if !保留 {
				表.S删值(数据字段)
			}
		}
		筛选后列表.T添加值(表)

	}

	return
}


